package DesignMode.flyweight;

/**
 * 享元模式
 * 两个概念
 * •　内部状态：不会随环境的改变而改变，可以共享的相同内容
 * •　外部状态：随着环境的改变而改变，不能够共享的内容
 * 享元：共享内部状态
 * 五子棋可以共享的内部状态是颜色
 * 享元模式用于消除大量的对象
 * 使用例子：缓存，线程池等
 */
public class FlyweightPatternDemo {

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            String color = getColor(i % 2);
            Gobang c = GobangFactory.getGobang(color);
            c.setX(i + 1);
            c.setY(i + 2);
            c.move();
        }
    }

    private static String getColor(int value) {
       if(value == 0) {
           return "black";
       }
       return "white";
    }

 }